import { useState } from 'react';
import { AxiosResponse } from 'axios';
import { BaseDTO } from '@todo/core';

/**
 * Возвращает API модуль из контекста
 */
function useError(): any {
  const [formError, setFormError] = useState<Record<string, string>>({});
  const [errorMessage, setErrorMessage] = useState<string>('');

  const setError = function (err: AxiosResponse<BaseDTO>) {
    setErrorMessage('');
    setFormError({});

    if (err.data.errors) {
      const transformedObject = err.data.errors.reduce<{
        [key: string]: string;
      }>((obj, item) => {
        obj[item.property] = item.message;
        return obj;
      }, {});
      setFormError(transformedObject);
      console.log('>>>>', transformedObject);
    }

    if (!err.data.errors) {
      setErrorMessage(err.data.message);
    }
  };

  return { formError, errorMessage, setError };
}

export { useError };
